feat(dl): column resizing (#DS-4609) - #1895
Conversation
|
Visit the preview URL for this PR (updated for commit d368bc6): https://koobiq-next--prs-1895-7uegobeu.web.app (expires Fri, 28 Aug 2026 13:36:46 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: c9e37e518febda70d0317d07e8ceb35ac43c534c |
|
Пример нужно изменить, чтобы минимальная ширина и ширина по умолчанию отличались. Нужен пример, который наглядно покажет, как по двойному клику меняется ширина. Минимальную ширину сделать в районе 100px. |
|
Нужен пример, где ширина меняется между несколькими списками DL. В продуктах есть кейс, где списки располагаются внутри аккордеонов. Сделал макет примера |
|
По обработке курсоров есть несоответствие гайду. В разделе «Курсор» указано, что курсор должен показывать не только возможность изменения размера (col-resize), но и доступное направление: e-resize при минимальной ширине панели, w-resize при максимальной, default, если изменить размер невозможно. Сейчас в kbq-dl всегда передаётся cursor="col-resize", поэтому при достижении min/max пользователь не получает обратной связи. Предлагаю вычислять курсор на основе текущей ширины и ограничений, обновлять его во время drag и учитывать RTL. |
|
В момент перетаскивания полоска должна становиться толстой. На стилизацию состояния Focus тоже надо обратить внимание |
|
появление рамки фокуса должно быть без анимации, мгновенно |
|
dl.scss:104–107: hover-эффект не учитывает тип устройства Полезно ограничить появление линии при наведении @media (hover: hover) and (pointer: fine). На touch-устройствах :hover может срабатывать после касания и оставлять линию видимой после завершения взаимодействия. |
добавил пример с двумя списками |
поправил |
Ожидаю, что курсор будет col-resize, тк колонку можно сделать как более узкой, так и расширить dl-column-resize-cursor-bug.mp4 |
|
Фокус на полоске. Вокруг полоски видна рамка. Начал тянуть: вижу рамку и синюю полоску. Взаимодействие идет мышкой: ожидаю, что рамка скроется. Будет полоска синего цвета в момент перетаскивания |
после фокуса с клавиатуры в момент перетаскивания фокус сохраняется, поэтому и рамку видно, можно програмно принудительно скрывать рамку при перетаскивании, но как быть при перетаскивании стрелками? в этот момент фокус должен быть виден? upd. скрыл рамку в момент перетаскивания мышью |
баг, поправлю |
я имел в виду col-resize — ранее я неправильно написал |
Я вижу поведение так: рамка показывает клавиатурное управление. Сам фокус снимать не нужно.
Мышка — синяя полоска без рамки, клавиатура — полоска с рамкой. |
поправил |
готово |
|
Заметил некорректное изменение курсора при ресайзе: когда колонка достигает минимальной или максимальной ширины и дальше уже не меняется, курсор сбрасывается на Я изучил поведение в macOS и веб-приложении Figma: пока пользователь удерживает кнопку мыши и продолжает drag, курсор остаётся связанным с ресайзом, даже если достигнут предел. Это логично: жест ещё не завершён, а колонку можно сразу потянуть в обратную сторону. Затем я обратился к ИИ. Его вывод:
Нужно доработать это поведение и покрыть тестами сценарии: достижение |
|
Записал видос про смену курсора dl-colresize-cursor-bug.mp4 |
|
Вот еще про ховеры на другие элементы при ресайзе. Это типа то же самое, что я Лёне говорил в PR про list drag-sort #1911 (comment) Думаю, что это можно отдельно доработать
|
После ресайза мышкой не должно остаться видимой рамки |
|
создал отдельную задачу DS-5463 |
поправил |
- убраны избыточные уточнения про горизонтальный режим: понятие колонок не оставляет разночтений; - убраны шорткаты и дополнительные сценарии взаимодействия, поскольку они будут общими для всех сплиттеров; - подробнее описано назначение привязки [(dtWidth)]; - раздел про изменение ширины перемещен в конец статьи как описание дополнительной возможности.
- removed redundant horizontal-mode clarification; - removed shortcut and click descriptions shared across splitters; - explained use cases for `[(dtWidth)]`; - moved the section to the end as an additional feature.
f6b8c63 to
81410de
Compare
поправил |
🚨 E2E tests failedReview the report for details. 💡 Comment |


No description provided.